#include "comm.hpp"
#include <unistd.h>

// 查看 IPC 资源
// ipcs
// 在终端里输入 ipcs -m 可以查看所创建的共享逆内存的哦
// ipcrm -m + shmid(不是加 key 的哦)

// 02:00:00 有一个实验演示

// 下面的代码是监控脚本：
// while :; do ipcs -m; sleep 1; echo "-------------------------";done

int main(void)
{
    key_t k = getKey();
    // std::cout << "key:" << k << std::endl;    // cpp 里面不好打印 k 的 16 进制形式
    printf("key: 0x%x\n", k); // key
    int shmid = createShm(k); // server 端是 createShm(k), client 是 getShm(k)
    printf("shmid: %d\n", shmid);

    sleep(5);

    // attachShm(shmid) 返回共享内存的首地址
    char *start = (char *)attachShm(shmid);
    printf("attach success, arrress start: %p\n", start); // 可以看到 nattch 增加 1

    // 使用
    while (true)
    {
        //  char buffer[]; read(pipefd, buffer, ...)
        printf("client say : %s\n", start); // 接收 client 修改的 start
        sleep(1);
    }

    // 去链接
    detachShm(start);

    sleep(5);

    // // 删除共享内存
    delShm(shmid);

    return 0;
}
